﻿using Abp.Application.Services.Dto;
using Mt.Site.Application.WorkFlows.Dto.Manager;
using Mt.Site.Application.WorkFlows.Dto.wf;
using Mt.Site.Core.Organizations.UserCache.Models;
using Mt.Site.Core.WorkFlows.Process.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Application.WorkFlows
{
    //对外服务接口
    public interface IWorkFlowAppService : IBackEndAppService
    {
        Task<GetUserSelectionDataOutput> GetUserListAsync(GetUserListInput input);

        Task<FormDataOutput> GetFormDataForEditAsync(EntityDto<Guid> input);

        Task<FormDataOutput> GetDataForPrintAsync(PaperIdInput input);

        Task<Guid> AddNewPaperAsync(AddNewPaperInput input);

        Task UpdateFormDataAsync(UpdateFormDataInput input);

        Task AddOrUpdateReply(AddOrUpdateReplyInput input);

        Task<StateWhenSubmit> CheckStateBeforeExecuteAction(ExecuteActionInput input);

        Task GoBack(GoBackInput input);

        Task ExecuteAction(ExecuteActionInput input);

        /// <summary>
        /// 隐藏撤销发布的流程
        /// </summary>
        /// <returns></returns>
        Task<GetWorkFlowOutput> GetWorkFlowList();

        Task<GetWorkFlowInfoOutput> GetWorkFlowInfoAsync(EntityDto<Guid> input);

        Task<GetNodeListOutput> GetNodeList(GetNodeListInput input);

        Task AddProcessMsg(AddProcessMsgInput input);

        Task<List<WorkFlowProcessMsgDto>> GetAllAdditionalMsg(EntityDto<Guid> input);
    }
}
